﻿using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Data.SQLite;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.Windows.Forms;

namespace MyVideoTek
{
    class GenreFilm : SqliteData
    {
        //Attributs
        int idGenre;
        int idFilm;

        public GenreFilm(int unIdGenre = 0, int unIdFilm = 0)
        {
            //Recup l'ID
            idGenre = unIdGenre;
            idFilm = unIdFilm;

            if (idGenre >= 0 && idFilm >= 0)
            {
                //Verification si le genre et le film sont déjà associés
                if (!VerifDoublon(idGenre, idFilm))
                {
                    //Ajoute le nouveau genre
                    InsertGenreFilm();
                }
            }
        }

        //Ajouter un artiste en BDD
        public void InsertGenreFilm()
        {
            //Si le genre n'existe pas
            if (!VerifDoublon(idGenre, idFilm))
            {
                //Requete insertion Film
                string maRequete = "INSERT INTO idgenre(id_genre, id_film) VALUES(@idGenre, @idFilm)";

                SQLiteConnection maConnexionSQLsrv = new SQLiteConnection(NameBdd);

                //Création de la commande SQL 
                SQLiteCommand myCommand = new SQLiteCommand(maRequete, maConnexionSQLsrv);

                //Création et décalartion des paramètres 
                myCommand.Parameters.Add(new SQLiteParameter("@idGenre"));
                myCommand.Parameters.Add(new SQLiteParameter("@idFilm"));

                //Attribution des valeurs aux paramètres 
                myCommand.Parameters["@idGenre"].Value = Convert.ToInt32(idGenre);
                myCommand.Parameters["@idFilm"].Value = Convert.ToInt32(idFilm);


                //Tente d'inserer un film
                try
                {
                    //Execution de la requête 
                    myCommand.Connection.Open();
                    myCommand.ExecuteNonQuery();
                    myCommand.Connection.Dispose();
                }
                catch (SqlException ex)
                {
                    //Message d'erreur
                    MessageBox.Show(ex.Message);
                }
            }
        }

        private bool VerifDoublon(int idGenre, int idFilm)
        {
            bool result = false;

            string maRequete = "SELECT * FROM idgenre WHERE id_genre = @idGenre AND id_film = @idFilm";

            SQLiteConnection maConnexionSQLsrv = new SQLiteConnection(NameBdd);

            //Création de la commande SQL 
            SQLiteCommand myCommand = new SQLiteCommand(maRequete, maConnexionSQLsrv);

            myCommand.Parameters.Add(new SQLiteParameter("@idGenre"));
            myCommand.Parameters.Add(new SQLiteParameter("@idFilm"));

            //Attribution des valeurs aux paramètres 
            myCommand.Parameters["@idGenre"].Value = Convert.ToInt32(idGenre);
            myCommand.Parameters["@idFilm"].Value = Convert.ToInt32(idFilm);

            SQLiteDataReader resultReader = null;

            //Tente d'inserer un film
            try
            {
                //Execution de la requête 
                myCommand.Connection.Open();
                resultReader = myCommand.ExecuteReader();

            }
            catch (SqlException ex)
            {
                //Message d'erreur
                MessageBox.Show(ex.Message);
            }

            //True s'il y a des enregistrement
            result = resultReader.HasRows;


            //Ferme la connexion
            myCommand.Connection.Dispose();

            //return
            return result;
        }
  

        public void GetIdGenreByIdFilm(int idFilm)
        {
            string maRequete = "SELECT * FROM genre WHERE id_film = @idFilm";

            SQLiteConnection maConnexionSQLsrv = new SQLiteConnection(NameBdd);

            //Création de la commande SQL 
            SQLiteCommand myCommand = new SQLiteCommand(maRequete, maConnexionSQLsrv);

            myCommand.Parameters.Add(new SQLiteParameter("@idFilm"));

            //Attribution des valeurs aux paramètres 
            myCommand.Parameters["@idFilm"].Value = idFilm;

            SQLiteDataReader resultReader = null;

            //Tente d'inserer un film
            try
            {
                //Execution de la requête 
                myCommand.Connection.Open();
                resultReader = myCommand.ExecuteReader();

            }
            catch (SqlException ex)
            {
                //Message d'erreur
                MessageBox.Show(ex.Message);
            }

            //Assignation
            while (resultReader.Read())
            {
                idGenre = Convert.ToInt32(resultReader["id_genre"].ToString());
                idFilm = Convert.ToInt32(resultReader["id_film"].ToString());
            }

            myCommand.Connection.Dispose();
        }
    }
}
